pub fn convert_base(num_str: &str, to_base: u32) -> String {
    let (num, from_base) = parse_input(num_str);
    let decimal_value = from_base_to_decimal(&num, from_base);
    decimal_to_base(decimal_value, to_base)
}

// 解析输入，返回数值和源进制
fn parse_input(num_str: &str) -> (String, u32) {
    let parts: Vec<&str> = num_str.split('(').collect();
    let num = parts[0].to_string();
    let from_base: u32 = parts[1][..parts[1].len()-1].parse().unwrap(); // 直接去掉末尾的括号
    (num, from_base)
}

// 将指定进制的数值转换为十进制
fn from_base_to_decimal(num: &str, from_base: u32) -> u32 {
    num.chars().rev().enumerate().map(|(i, c)| {
        c.to_digit(from_base).unwrap() * from_base.pow(i as u32)
    }).sum()
}

// 将十进制值转换为指定进制
fn decimal_to_base(decimal_value: u32, to_base: u32) -> String {
    if decimal_value == 0 {
        return "0".to_string();
    }

    let mut result = String::new();
    let mut value = decimal_value;

    while value > 0 {
        let digit = value % to_base;
        result.push(char::from_digit(digit, to_base).unwrap());
        value /= to_base;
    }

    result.chars().rev().collect() // 反转字符串
}